/*
 * Login.java
 *
 * Created on 25/02/2011, 17:20:08
 */

package pbf.internalframe;

import org.hibernate.Session;
import pbf.conf.hibernate.HibernateUtil;
import pbf.conf.hibernate.entidades.Log;
import pbf.conf.hibernate.entidades.Usuario;
import pbf.principal.SistemaDeAgendamento;
import pbf.util.DataHora;
import pbf.util.Mensagem;

/**
 *
 * @author Ricardo
 */
public class Login extends javax.swing.JInternalFrame
{

    public Login()
    {
        initComponents();
    }
   
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        usuarioLogin = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        usuarioSenha = new javax.swing.JPasswordField();
        jButton1 = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        jSeparator2 = new javax.swing.JSeparator();

        getContentPane().setLayout(null);

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 16));
        jLabel1.setText("Senha");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(30, 110, 330, 20);

        usuarioLogin.setFont(new java.awt.Font("Tahoma", 0, 14));
        usuarioLogin.setToolTipText("Informe o Login de usuário");
        getContentPane().add(usuarioLogin);
        usuarioLogin.setBounds(30, 60, 320, 23);

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 16));
        jLabel2.setText("Login");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(30, 36, 330, 20);

        usuarioSenha.setFont(new java.awt.Font("Tahoma", 0, 16));
        getContentPane().add(usuarioSenha);
        usuarioSenha.setBounds(30, 130, 320, 26);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pbf/imagens/icon_lockOPEN_gif.gif"))); // NOI18N
        jButton1.setText("Entrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(220, 240, 130, 25);

        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pbf/imagens/lock.png"))); // NOI18N
        getContentPane().add(jLabel3);
        jLabel3.setBounds(30, 210, 70, 70);
        getContentPane().add(jSeparator2);
        jSeparator2.setBounds(0, 230, 390, 10);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-395)/2, (screenSize.height-313)/2, 395, 313);
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

        try
        {
             // Cria uma sessão do Hibernate
            Session sessao = HibernateUtil.openSession();
     
            //Inicia uma Transação
            sessao.beginTransaction();

            //Consulta no banco qual conta tem o numero e agência igual a informada. retornando um resultado único.
            Usuario usuario = (Usuario) sessao.createQuery("from pbf.conf.hibernate.entidades.Usuario where USUARIO_LOGIN='"+usuarioLogin.getText()+"' and USUARIO_SENHA='"+usuarioSenha.getText()+"' AND USUARIO_ATIVO='S' ").uniqueResult();

            if(usuario!=null)
            {
                if(usuario.getUsuarioNivelAcesso().equals("ADMINISTRADOR"))// Verifica se a conta é de administrador
                    SistemaDeAgendamento.ativaMenuAdministrador();
                else
                    if(usuario.getUsuarioNivelAcesso().equals("ATENDENTE"))// Verifica se a conta é de Atendente
                        SistemaDeAgendamento.ativaMenuAtendente();
                    else
                        SistemaDeAgendamento.ativaMenuSecretaria();

                  Log log = new Log();
                  log.setUsuario(usuario);
                  log.setLogDtEntrada(DataHora.getDate(DataHora.getDataPresente()));
                  log.setLogDtSaida(DataHora.getDate(DataHora.getDataPresente()));
                  sessao.save(log);
                  SistemaDeAgendamento.setUsuario(usuario);
                  SistemaDeAgendamento.setLog(log);
                  setVisible(false);
                  usuarioLogin.setText("");
                  usuarioSenha.setText("");
            }
            else
            {
                Mensagem.mensagerio("Atenção!\nSenha ou Login informado não existe", "Mensagem", Mensagem.ATENCAO_MENSAGEM);
            }

            //Encerra a transação e fecha a sessão
            sessao.getTransaction().commit();
            sessao.close();
        }
        catch(Exception e)
        {
            Mensagem.mensagerio("Ocorreu um erro durante o Login\n"+e, "SAPBF", Mensagem.ERROR_MENSAGEM);
        }    
    }//GEN-LAST:event_jButton1ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTextField usuarioLogin;
    private javax.swing.JPasswordField usuarioSenha;
    // End of variables declaration//GEN-END:variables
}
